from django.db.models.signals import pre_save
import inspect

#from empresa.contactos.models import *
#from empresa.ventas.models import Factura

def calc(my_class):

	def my_callback3(sender, **kwargs):
		print sender
		
	pre_save.connect(my_callback3) 
	print "En calc 1"
	print pre_save.receivers

		
	def my_callback(sender, **kwargs):
		print sender
		if kwargs:
			print kwargs
		# obtiene los argumentos de la instancia
		kw = {}
		for f in inspect.getargspec(a.B).args:
			kw[f] = sender.__getattr__(f)
		
		# si la funcion es "get_pepito", entonces corresponde al campo "pepito". Le saca el "get_"
		print 0/0 ; func.__dict__()
		attr = func.func_name.__name__[4:]
		
		# setea el campo "attr" de "sender" llamando a la funcion con "kw"
		sender.__setattr__(attr, func(**kw))
			
	def decorator(func):
		#def wrapper(*__args,**__kw):
		#	return func(*__args,**__kw)
		return func

	print my_class
	# calcular el campo antes de grabar la instancia
	pre_save.connect(my_callback) #, sender =Factura)
	print "En calc 2"
	print pre_save.receivers
	
	return decorator
